﻿/*----------------------------------------------------------------
    // Copyright (C) 2009 江苏华招网
    // 版权所有。 
    // 作者：庄金冬 
    //
    // 文件名：BLL_Role.cs
    // 文件功能描述：角色操作业务逻辑类,实现接口IBLL_Role,继承自类MarshalByRefObject
    // 创建标识：庄金冬2009-03-06
    //
    // 修改标识：
    // 修改描述：
    //
    // 修改标识：
    // 修改描述：
    //
    // 审核人：
    // 审核时间：
    // 审核说明：
 //----------------------------------------------------------------*/

using System;
using System.Collections.Generic;

using System.Text;
using HZ.DrugTrade.IBLL;
using HZ.DrugTrade.Model;
using HZ.DrugTrade.DAL;
using System.Data;
namespace HZ.DrugTrade.BLL
{

    [Serializable]
    /// <summary>
    /// 角色操作业务逻辑类,实现接口IBLL_Role,继承自类MarshalByRefObject
    /// </summary>
    public class BLL_Role : MarshalByRefObject, IBLL_Role
    {
        #region IBLL_Role 成员

        /// <summary>
        /// 添加角色同时可添加权限信息(0不成功;1成功;2该名称已经存在)
        /// </summary>
        /// <param name="role">角色实体（可含权限信息）[RoleID不用赋值，由系统自动生成]</param>
        /// <returns>0不成功;1成功;2该名称已经存在</returns>
        public int AddRole(Role role)
        {
            //
            role.RoleID = Guid.NewGuid().ToString();
            int state = DAL_Role.AddRole(role);
            if(state ==1)
            {
                BLL_Log.Instance.AddKeyOperationLog(new KeyOperationLog { OperateMessage = string.Format("添加角色同时可添加权限信息：{0};处理时间:{1};)", role.RoleName, DateTime.Now.ToString()), ClientIP = HZ.Fun2.GetClientIP() });
            }
            return state;
           
        }


        /// <summary>
        /// 根据编号删除角色(包括递归删除角色权限)
        /// [0.不成功,1.不成功,2.角色不存在,3.该角色已被用户使用，不能删除]
        /// </summary>
        /// <param name="roleid">角色编号</param>
        /// <returns>0.不成功,1.不成功,2.角色不存在,3.该角色已被用户使用，不能删除</returns>
        public int DeleteRole(string roleid)
        {
            int state = DAL_Role.DeleteRole(roleid);
            if(state == 1)
            {
                BLL_Log.Instance.AddKeyOperationLog(new KeyOperationLog { OperateMessage = string.Format("根据编号删除角色：{0};处理时间:{1};)", roleid, DateTime.Now.ToString()), ClientIP = HZ.Fun2.GetClientIP() });
            }
            return state;

        }

        /// <summary>
        /// 获取所有角色
        /// </summary>
        /// <param name="currentPage">当前页</param>
        /// <param name="pageSize">每页显示记录数</param>
        /// <param name="totalRecord">（输出参数）总记录数目</param>
        /// <returns></returns>
        public IList<Role> GetAllRole(int currentPage, int pageSize, out int totalRecord)
        {

            return DAL_Role.GetAllRole( currentPage,  pageSize, out  totalRecord);
        }

        /// <summary>
        /// 获取所有角色
        /// </summary>
        /// <returns></returns>
        public IList<Role> GetAllRole()
        {
            int totalRecord = 0;
            return DAL_Role.GetAllRole(1, 10000, out  totalRecord);
        }

        /// <summary>
        /// 根据角色编号获取该角色的操作权限
        /// </summary>
        /// <param name="roleid">角色编号</param>
        /// <returns></returns>
        public IList<OperatingRule> GetRoleOperatingRuleByRoleID(string roleid)
        {
            return DAL_Role.GetRoleOperatingRuleByRoleID(roleid);
        }

        /// <summary>
        /// 根据角色编号获取该角色(包括操作权限)
        /// </summary>
        /// <param name="roleid">角色编号</param>
        /// <returns>角色(包括操作权限)</returns>
        public Role GetRole_OperatingRule_ByRoleID(string roleid)
        {
            return DAL_Role.GetRole_OperatingRule_ByRoleID(roleid);
        }

        /// <summary>
        /// 设定角色的操作权限(连带更新)
        /// </summary>
        /// <param name="role">带角色操作权限的角色对象</param>
        /// <returns></returns>
        public bool SetRoleOperatingRule(Role role)
        {
            bool state = DAL_Role.SetRoleOperatingRule(role);
            if (state == true)
            {
                BLL_Log.Instance.AddKeyOperationLog(new KeyOperationLog { OperateMessage = string.Format("设定角色的操作权限：{0};处理时间:{1};)", role.RoleName, DateTime.Now.ToString()), ClientIP = HZ.Fun2.GetClientIP() });
            }
            return state;
        }

        /// <summary>
        /// 设定角色名称及操作权限(连带更新)[0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在]
        /// </summary>
        /// <param name="role">带角色操作权限的角色对象</param>
        /// <returns>0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在</returns>
        public int SetRole_OperatingRule(Role role)
        {
            int state = DAL_Role.SetRole_OperatingRule(role);
            if(state == 1)
            {
                BLL_Log.Instance.AddKeyOperationLog(new KeyOperationLog { OperateMessage = string.Format("设定角色名称及操作权限：{0};处理时间:{1};)", role.RoleName, DateTime.Now.ToString()), ClientIP = HZ.Fun2.GetClientIP() });
            }
            return state;
        }

        /// <summary>
        /// 设定角色名称[0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在]
        /// </summary>
        /// <param name="role">角色对象</param>
        /// <returns>0,更新失败;1,更新成功;2,该角色名称已经存在3,该角色已经不存在</returns>
        public int SetRole(Role role)
        {
            int state = DAL_Role.SetRole(role);
            if(state == 1)
            {
                BLL_Log.Instance.AddKeyOperationLog(new KeyOperationLog { OperateMessage = string.Format("设定角色名称：{0};处理时间:{1};)", role.RoleName, DateTime.Now.ToString()), ClientIP = HZ.Fun2.GetClientIP() });
            }
            return state;
        }

        #endregion
    }
}
